const api = require("../../config/api")
var app = getApp()
// pages/register/register.js
var COS = require("../../utils/cos-wx-sdk-v5")
var cos;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    phone:"",
    code:"",
    userIF:{
      avatarUrl:{
        avatarUrl:"https://zj-1323324849.cos.ap-nanjing.myqcloud.com/%E9%BB%98%E8%AE%A4%E5%A4%B4%E5%83%8F2.png"
      },
      nickname:""
    }
  },

  acquireAvatar(e) {
    wx.chooseMedia({
      count:1,
      sizeType:['original','compressed'],
      sourceType:['album','camera'],
      success:(e) => {
            console.log(e)
            //在云端保存图片，数据库的图片路径应该是云端的路径
     //将图片上传到云端数据库
          //去某个地方获取临时密钥
          cos = new COS({
            SimpleUploadMethod: 'putObject', // 强烈建议，高级上传、批量上传内部对小文件做简单上传时使用 putObject,SDK 版本至少需要v1.3.0
            // 必选参数
            getAuthorization: function (options, callback) {
                // 服务端 JS 和 PHP 示例：https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/
                // 服务端其他语言参考 COS STS SDK ：https://github.com/tencentyun/qcloud-cos-sts-sdk
                // STS 详细文档指引看：https://cloud.tencent.com/document/product/436/14048
                wx.request({
                    url: 'http://127.0.0.1:8000/api/credential/',
                    data: {
                        // 可从 options 取需要的参数
                    },
                    success: function (result) {
                        const data = result.data;
                        const credentials = data && data.credentials;
                        if (!data || !credentials) return console.error('credentials invalid');
                        callback({
                            TmpSecretId: credentials.tmpSecretId,
                            TmpSecretKey: credentials.tmpSecretKey,
                            // v1.2.0之前版本的 SDK 使用 XCosSecurityToken 而不是 SecurityToken
                            SecurityToken: credentials.sessionToken,
                            // 建议返回服务器时间作为签名的开始时间，避免用户浏览器本地时间偏差过大导致签名错误
                            StartTime: data.startTime, // 时间戳，单位秒，如：1580000000
                            ExpiredTime: data.expiredTime, // 时间戳，单位秒，如：1580000900
                        });
                    }
                });
            }
        });

        //给图片生成一个随机的名字，避免上传的名字重复导致图片被覆盖
        let imageFilePath = e.tempFiles[0].tempFilePath
        var filePathSplit = imageFilePath.split('.')
        var ext = filePathSplit[filePathSplit.length-1]
        
        let randomString = Math.random().toString(36).slice(-8) + String(new Date().getTime())

        var fileKey = randomString + '.' + ext;

        var that = this;

        (function(){
          cos.uploadFile({
            Bucket: 'zj-1323324849', /* 必须 */
            Region: 'ap-nanjing',     /* 存储桶所在地域，必须字段 */
            Key: fileKey,              /* 必须 */
            FilePath: imageFilePath,                /* 必须 */
            SliceSize: 1024 * 1024 * 5,     /* 触发分块上传的阈值，超过5MB使用分块上传，非必须，按需调整，最小支持1MB */
        }, (err, data) => {
            if(err){
              wx.showToast({
                title: '上传失败',
                icon:'error'
              })
            }else {
              wx.showToast({
                title: '图片上传成功!',
                icon:'success'
              })

              that.setData({
                ['userIF.avatarUrl.avatarUrl']:"https://" + data.Location
              })
              
            }
        });
        })()
      }
    })  
  },
  
  bindNameInput(e){
    this.setData({
        ['userIF.nickname']:e.detail.value
    })
  },
  bindPhoneInput(e){
    this.setData({
      ['phone']:e.detail.value
    })
  },
  bindCodeInput(e){
    this.setData({
      code:e.detail.value
    })
  },
  onClickCheckCode(){
    if(this.data.phone.length==0){
      wx.showToast({
        title: '请填写手机号',
        icon:'none'
      })
      return 
    }
    if(this.data.userIF.nickname.length==0){
      wx.showToast({
        title: '请填写昵称',
        icon:'none'
      })
      return
    }
    var reg = /^(1[3|4|5|6|7|8|9]\d{9})$/
    if(!reg.test(this.data.phone)){
      wx.showToast({
        title: '手机号格式错误',
        icon:'error'
      })
      return 
    }
    wx.showToast({
      title: '发送成功!',
    })
    wx.request({
      url: api.MessageAPI,
      data:{
        phone:this.data.phone
      },
      method:'GET',
      dataType:'json',
      responseType:'text',
      success:(res) => {
        if(res.data.status){
          wx.showToast({
            title: res.data.message,
            icon:'success'
          })
        }else {
          //发送失败
          wx.showToast({
            title: res.data.message,
            icon:'none'
          })
        }
      }
    })
  },

  //点击注册
  onClickSubmit() {
    if(this.data.phone.length==0){
      wx.showToast({
        title: '手机号不能为空',
        icon:'error'
      })
      return
    }
    var reg = /^(1[3|4|5|6|7|8|9]\d{9})$/
    if(!reg.test(this.data.phone)){
      wx.showToast({
        title: '手机号格式错误!',
        icon:'error'
      })
      return
    }
    if(this.data.userIF.nickname.length==0){
      wx.showToast({
        title: '昵称不能为空',
        icon:"error"
      })
      return
    }

    wx.request({
      url: api.LoginAPI,
      data:{
        telephone:this.data.phone,
        code:this.data.code,
        nickname:this.data.userIF.nickname,
        avatar:this.data.userIF.avatarUrl.avatarUrl
      },
      method:'POST',
      dataType:'json',
      responseType:'text',
      success:(res) => {
        if(res.data.status){
            //初始化用户信息
            app.initUserInfo(res.data.data)
            wx.navigateBack({
              delta:2
            })
            wx.showToast({
              title: '注册成功!',
              icon:'success'
            })
        }else {
            wx.showToast({
              title: res.data.message,
              icon:'error'
            })
        }
      }
    })
  },



  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})